From: Guillaume Desmottes Date: Mon, 20 Jun 2011 13:01:54 +0000 (+0200) Subject: Implement Telepathy Debug interface (#652816) X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~8110 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=b22c5eb1671cd6a0155d7cf2d97651ec6c315cd0;p=gnome-shell.git Implement Telepathy Debug interface (#652816) This enable debugging using empathy-debugger. --- diff --git a/src/main.c b/src/main.c index 0e7718719..aafef0684 100644 --- a/src/main.c +++ b/src/main.c @@ -19,6 +19,8 @@ #include #include #include +#include +#include #include "shell-a11y.h" #include "shell-global.h" @@ -428,6 +430,25 @@ muted_log_handler (const char *log_domain, /* Intentionally empty to discard message */ } +static void +default_log_handler (const char *log_domain, + GLogLevelFlags log_level, + const char *message, + gpointer data) +{ + TpDebugSender *sender = data; + GTimeVal now; + + g_get_current_time (&now); + + tp_debug_sender_add_message (sender, &now, log_domain, log_level, message); + + /* Filter out telepathy-glib logs, we don't want to flood Shell's output + * with those. */ + if (!g_str_has_prefix (log_domain, "tp-glib")) + g_log_default_handler (log_domain, log_level, message, data); +} + static gboolean print_version (const gchar *option_name, const gchar *value, @@ -454,6 +475,7 @@ main (int argc, char **argv) GOptionContext *ctx; GError *error = NULL; int ecode; + TpDebugSender *sender; g_type_init (); @@ -505,6 +527,14 @@ main (int argc, char **argv) g_log_set_handler ("Bluetooth", G_LOG_LEVEL_DEBUG | G_LOG_LEVEL_MESSAGE, muted_log_handler, NULL); + /* Turn on telepathy-glib debugging but filter it out in + * default_log_handler. This handler also exposes all the logs over D-Bus + * using TpDebugSender. */ + tp_debug_set_flags ("all"); + + sender = tp_debug_sender_dup (); + g_log_set_default_handler (default_log_handler, sender); + /* Initialize the global object */ shell_global_get (); @@ -516,5 +546,7 @@ main (int argc, char **argv) g_object_unref (shell_global_get ()); } + g_object_unref (sender); + return ecode; }